for (G,S,P) in (
    (Nanoseconds, "ns", "nanoseconds"),
    (Microseconds, "us", "microseconds"),
    (Milliseconds, "ms", "milliseconds"),
    (Seconds, "sc", "seconds"),
    (Minutes, "mi", "minutes"),
    (QuarterHours, "qh", "qrtrhours"),
    (Hours, "hr", "hours"),
    (Days, "dy", "days"),
    (Weeks, "wk", "weeks"),
    (Months, "mo", "months"),
    (Quarters, "qr", "quarters"),
    (Years, "yr", "years"),
    (Decades, "dc", "decades"),
    (Centuries, "cn", "centuries"),
)
  @eval begin
    function Base.string(x::$G)
        n = value(x)
        str = string(n, $S)
        return str
    end
  end
end

show(io::IO, x::T) where T<:AbstractGranularity = print(io, string(x))
